package com.dankegongyu.sensors;

import android.content.Context;

import java.util.List;
import java.util.Map;

/**
 * 统计：
 */
public interface DKISensors {

    void init(boolean isDebug, Context context, String serverUrl, boolean isAutoTrack);

    void setSuperProperties(Map<String, Object> properties);//设置公共属性

    void unregisterSuperProperty(String propertyName);//删除某个公共属性

    void clearSuperProperties();//清除所有公共属性

    void setUserInfo(Map<String, Object> properties);//设置用户信息

    void trackInstallation(String eventName, Map<String, Object> properties);//统计安装事件,注意：需要请求READ_PHONE_STATE权限回调后执行

    void onTrackEvent(String eventName, Map<String, Object> properties);//统计事件带参数

    void onTrackWithoutParams(String eventName);//统计事件不带参数

    void trackAppViewScreen(String url, Map<String, Object> properties);//统计页面浏览事件

    /**
     * 登录
     */
    void login(String userId);

    /**
     * 退出登录
     */
    void logout();

    void trackAppCrash();//开启crash信息收集

    void flush();//每次在事件统计方法调用时，sdk会判断时候满足上报服务器条件来判断是否上报，如果追求数据采集的时效性，可以调用 flush() 方法，强制发送数据

    void showUpWebView(Object webView, boolean isX5WebView);//打通app与h5

    void configureSensors(int bulkSize, int flushInterval);

    String getAnonymousId();

    /**
     * 渠道追踪事件
     */
    void trackChannelEvent(String eventName);

    /**
     * 渠道追踪事件
     */
    void trackChannelEvent(String eventName, Map<String, Object> properties);

    /**
     * 忽略部分Activity http://manual.sensorsdata.cn/sa/latest/page-1573983.html
     */
    void ignoreAutoTrackActivities(List<Class<?>> activityList);

    /**
     * 忽略某个Activity
     */
    void ignoreAutoTrackActivity(Class<?> activity);

    /**
     * 忽略部分Fragment http://manual.sensorsdata.cn/sa/latest/page-1573983.html
     */
    void ignoreAutoTrackFragments(List<Class<?>> fragmentList);

    /**
     * 忽略某个Fragment
     */
    void ignoreAutoTrackFragment(Class<?> fragment);
}